#include <myOs/types.h>
#include <stdio.h>


typedef struct descriptor /* 共 8 个字节 */
{
    unsigned short limit_low;      //段界限0~15
    unsigned int base_low : 24;    //段界限0~23
    unsigned char type : 4;        //段类型
    unsigned char segment : 1;     // 1 表示代码段或数据段， 0 表示系统段
    unsigned char DPL : 2;         // Descriptor Privilege Level 描述符特权等级 0 ~ 3
    unsigned char present : 1;     //存在位， 1在内存中， 0在磁盘上
    unsigned char limit_high : 4;  //段界限 16 ~ 19
    unsigned char available : 1;   //
    unsigned char long_mode : 1;   // 64 位扩展扩展标志位
    unsigned char big : 1;         // 32位还是16位
    unsigned char granularity : 1; //粒度 4KB 或 1B
    unsigned char base_high;       //基地址 24 ~ 31 位
} __attribute__((packed)) descriptor;

int main()
{
    printf("size of u8 %d \n", sizeof(u8));
    printf("size of u16 %d \n", sizeof(u16));
    printf("size of u32 %d \n", sizeof(u32));
    printf("size of u64 %d \n", sizeof(u64));
    printf("size of descriptor %d \n", sizeof(descriptor));
    return 0;
}
